1. Field of the Invention
The invention generally relates to computer-based optimization methods and systems, and more particularly to autonomic optimization techniques implemented to improve software design efficiency.
2. Description of the Related Art
Software engineers and computer scientists often have various alternate ways of implementing algorithms in software coding. Moreover, these software designers often fix choices within the code based on current beliefs about future environments in which the software will be run. For example, an on-line scheduling algorithm selects tasks for execution, attempting to optimize the system according to some criterion. However, the software code designer may not know what the best choices are in various situations. Quite often, the software code designer simply lacks the expertise that is required for making good choices. In many situations, the good choices depend on the environment and it is quite difficult to design, in advance, an algorithm that makes the best choices with respect to any environment. On the other hand, there are known methods for adapting choices to an environment by learning over time with feedback. However, one of the disadvantages of the conventional techniques is that a programmer must code a learning algorithm into the computer software program for each situation the software encounters. That is, there are no conventional automatic optimization techniques that use learning algorithms.
In view of the foregoing, there is a need for a method embedded in a software program, which allows the software program the ability to self-improve by making better choices with respect to the environment in which it functions.